package com.cui.project.model.vo;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 流量预测图表数据对象
 * 整合历史数据和预测数据，便于前端图表渲染
 *
 * @author cui
 */
@Data
public class TrafficForecastChartVO implements Serializable {

    /**
     * 接口ID
     */
    private Long interfaceId;

    /**
     * 接口名称
     */
    private String interfaceName;

    /**
     * 接口路径
     */
    private String path;

    /**
     * 接口方法
     */
    private String method;

    /**
     * 时间标签列表（X轴）
     * ["2024-11-01 10:00", "2024-11-01 11:00", ...]
     */
    private List<String> timeLabels;

    /**
     * 历史实际流量数据（Y轴 - 历史线）
     */
    private List<Integer> actualValues;

    /**
     * 预测流量数据（Y轴 - 预测线）
     */
    private List<Integer> predictedValues;


    /**
     * 置信区间下界（Y轴 - 阴影区域下边界）
     */
    private List<Integer> confidenceLower;

    /**
     * 置信区间上界（Y轴 - 阴影区域上边界）
     */
    private List<Integer> confidenceUpper;

    /**
     * 预测模型类型
     */
    private String modelType;

    /**
     * 模型准确度
     */
    private String accuracyScore;

    /**
     * 历史数据和预测数据的分界点索引
     * 用于前端区分历史数据和预测数据的显示样式
     */
    private Integer splitIndex;

    /**
     * 统计摘要
     */
    private TrafficSummary summary;

    /**
     * 流量统计摘要
     */
    @Data
    public static class TrafficSummary implements Serializable {
        /**
         * 历史平均流量
         */
        private Double avgHistorical;

        /**
         * 预测平均流量
         */
        private Double avgForecast;

        /**
         * 流量增长率（%）
         */
        private Double growthRate;

        /**
         * 历史最大流量
         */
        private Integer maxHistorical;

        /**
         * 预测最大流量
         */
        private Integer maxForecast;

        /**
         * 预测峰值时间
         */
        private String peakTime;

        private static final long serialVersionUID = 1L;
    }

    private static final long serialVersionUID = 1L;
}
